Skip to content

feat: append data with reserved stable row ids#6438

Open
majin1102 wants to merge 15 commits intomainfrom
reverse_row_id
Open

feat: append data with reserved stable row ids#6438
majin1102 wants to merge 15 commits intomainfrom
reverse_row_id

Conversation

@majin1102
Copy link
Copy Markdown
Contributor

@majin1102 majin1102 commented Apr 8, 2026

Close #6466

What this PR does

This PR introduces a new ReserveRowIds transaction operation and extends Append with an optional row_ids field. Both changes affect transaction metadata and the serialized transaction schema, so this part needs a vote.

What this PR does not do

This PR does not add any new field or persisted state to the manifest. The manifest format remains unchanged. The only manifest-related effect is that this PR provides a controlled transaction-level entry point for reserving and consuming next_row_id, rather than changing manifest contents themselves.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 8, 2026

ACTION NEEDED
Lance follows the Conventional Commits specification for release automation.

The PR title and description are used as the merge commit message. Please update your PR title and description to match the specification.

For details on the error please inspect the "PR Title Check" action.

@majin1102 majin1102 changed the title [codex] reserve stable row ids for append transactions feat: append data with reserved stable row ids Apr 8, 2026
@github-actions github-actions bot added the enhancement New feature or request label Apr 8, 2026
@codecov
Copy link
Copy Markdown

codecov bot commented Apr 9, 2026

@majin1102 majin1102 marked this pull request as ready for review April 9, 2026 12:00
@majin1102
Copy link
Copy Markdown
Contributor Author

@jackye1995 Hi, could you take a look at this issue and PR? If the motivation and proposal make sense to you, I’ll start a vote thread.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4cd5bfaa7f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines 408 to 410
match self.0 {
Operation::Append { fragments } => {
Operation::Append { fragments, .. } => {
let fragments = export_vec(py, fragments.as_slice())?;
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Handle ReserveRowIds when exporting Python operations

After introducing Operation::ReserveRowIds, this IntoPyObject match still has no arm for it and falls through to the _ => todo!() branch later in the same function. That makes Dataset.read_transaction(...) / get_transactions(...) crash at runtime for any version created by a reserve-row-ids commit, which breaks Python transaction/history APIs as soon as such a dataset is encountered.

Useful? React with 👍 / 👎.

Comment on lines 351 to 355
match operation {
Operation::Append {
fragments: rust_fragments,
..
} => {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Handle ReserveRowIds in JNI operation conversion

This JNI conversion match does not include Operation::ReserveRowIds; it currently falls through to _ => unimplemented!() in convert_to_java_operation_inner. As a result, reading transactions from Java (for example nativeReadTransaction / transaction listing) will panic when a dataset version was produced by ReserveRowIds, causing hard failures instead of a usable Java operation object.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request java python

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Insert data with reserved stable row ids

1 participant